//
//  HMPlaceholerTextView.swift
//  iOSWeibo11
//
//  Created by Apple on 16/7/27.
//  Copyright © 2016年 Apple. All rights reserved.
//

import UIKit

class HMPlaceholerTextView: UITextView {
    
    /// 占位文本属性, 以后设置占位文本直接将字符串设置给这个属性
    var placehodler: String? {
        didSet {
            placeholderLabel.text = placehodler
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init(frame: CGRect, textContainer: NSTextContainer?) {
        super.init(frame: frame, textContainer: textContainer)
        
        setupUI()
        
        // 通过代理方法监听文字改变
        // 代理只能是一个对象,先设置的会被后设置的覆盖掉
//        self.delegate = self
        
        // textView文字发生改变会发出通知
        // 通知是一对多的,一个人发出通知,可以多个人来接收,不会干扰别人
        // observer: AnyObject: 谁来监听
        // selector: 监听的方法
        // name: 要监听通知的名称
        // object: 通知的发送者, nil,只要发送这个通知,都能接收, 填一个对象,只有这个指定的对象发出的通知才能接受到
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textViewDidChange", name: UITextViewTextDidChangeNotification, object: self)
    }
    
    /// 文字改变后调用这个方法
    func textViewDidChange() {
        placeholderLabel.hidden = self.hasText()
    }
    
    // 移除通知
    deinit {
        NSNotificationCenter.defaultCenter() .removeObserver(self)
    }
    
    private func setupUI() {
        // 添加控件
        self.addSubview(placeholderLabel)
        
        // 添加约束
        placeholderLabel.translatesAutoresizingMaskIntoConstraints = false
        
        self.addConstraint(NSLayoutConstraint(item: placeholderLabel, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 5))
        self.addConstraint(NSLayoutConstraint(item: placeholderLabel, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 8))
    }
    
    // MARK: - 懒加载
    /// 占位label
    private lazy var placeholderLabel: UILabel = {
        let label = UILabel()
        
        // 设置
        label.font = UIFont.systemFontOfSize(18)
        label.textColor = UIColor.lightGrayColor()
        label.text = "我是来占位的"
        
        return label
    }()
}

//extension HMPlaceholerTextView: UITextViewDelegate {
//    /// 文字改变
//    func textViewDidChange(textView: UITextView) {
//        // 判断当前是否有文字
//        // 有文字隐藏,没文字显示
//        placeholderLabel.hidden = self.hasText()
//    }
//}